#include <iostream>
const int queenSize=10;
class arrayQueen{//为了解决队列因进出而导致前面空间浪费的情况
    public:
        arrayQueen():front(0),rear(0){}
        //入队列
        void push(const int &element){
            if((rear+1)%queenSize==front)//队列满：rear和front 差了个元素位置
            {
                
                return;
            }
            a[rear++]=element;
            rear %=queenSize;//成环标志
        }

        void pop(){
            if(front==rear){//队列空标志
                std::cout<<"队列空"<<std::endl;
                return;
            }
            front++;
            front %=queenSize;
        }

        int* getFront(){
            if(front==rear){
                std::cout<<"队列空"<<std::endl;
                return nullptr;
            }
            return &a[front];
        }

        bool isEmpty(){
                return front==rear;
        }

    private:
    int a[queenSize];
    int front;//队头指针 出队标记
    int rear;//队尾指针
};
int main(){
    arrayQueen q;
    for(int i=0;i<20;i++){
        q.push(i+1);
    }

    while(q.isEmpty()==false){
        std::cout<<*q.getFront()<<" ";
        q.pop();
    }
    q.push(1);
    while(q.isEmpty()==false){
        std::cout<<*q.getFront()<<" ";
        q.pop();
    }
    std::cout<<std::endl;
    return 0;
}